var express		= require('express');
var app = require('express')(),
	server = require('http').createServer(app);
var fs			= require("fs");
var bodyParse	= require('body-parser');
var path		= require('path');
var url			= require("url");
var querystring	= require("querystring");
var tiMsg = require('./routes/TiMsg');
// http://192.168.1.116:3000/login
// http://192.168.1.116:3000/room_report?selfid=100004&type=1
// http://192.168.1.116:3000/room_report?selfid=100004&type=2
// http://192.168.1.116:3000/club_report?selfid=100004
// http://192.168.1.116:3000/union_report?selfid=100004

var WebSocketServer = require('ws').Server,
    wss = new WebSocketServer({port: 8080});
// 连接池
var clients = {};

wss.on('connection', function(ws) {
	// 收到连接信息
    ws.on('message', function(message) {
		message = JSON.parse(message);
		if (message.type === "REGISTER") {
			clients[message.selfid] = ws;
			console.log(message.selfid,'拿到什么');
		}
    });

    // ws.on('close', function(message) {
    //     // 连接关闭时，将其移出连接池
    //     clients = clients.filter(function(ws1){
    //         return ws1 !== ws
    //     })
    // });
});

app.use(bodyParse.urlencoded({extended:false}));
// 通过这句话，可以将一个工具类的js脚本放到public文件夹中 
app.use(express.static(path.join(__dirname, 'public')));


// 处理get登陆请求
app.get('/login',function(req,res){
	var arg = url.parse(req.url);
	console.log('?????',arg.pathname);
	res.sendfile('./public/login.html');
});

// 处理get联盟or公会房间战报请求
app.get('/room_report',function(req,res){
	//获取返回的url对象的query属性值 
	var arg = url.parse(req.url).query;
	if(arg) {
		//将arg参数字符串反序列化为一个对象
		var params = querystring.parse(arg);
		console.log("params = ",params);
		// 请求的方式
		console.log("method = " + req.method);
		// 请求的url
		console.log("url = " + req.url);
		if(params.type == 1) {
			// 设置上半段脚本定义的内容 包括用户id和 对应客服id
			var str = "<script>var selfid=" + params.selfid + "\n var type=" + params.type + "\n var room_name='联盟房间记录'" + "</script>";
			fs.readFile('./public/room_report.html',function(err,data){
				// body
				if(err){
					console.log(err);
					//404：NOT FOUND
					res.writeHead(404,{"Content-Type":"text/html"});
				}
				else{
					//200：OK
					res.writeHead(200,{"Content-Type":"text/html"});		// 包头
					res.write(str + data.toString());						// 结合甩出上半段脚本和下半段html页面
				}
				res.end();
			});
			console.log('打开联盟房间记录+++++++++++++++++++',params.selfid,params.type);
		}else if(params.type == 2) {
			// 设置上半段脚本定义的内容 包括用户id和 对应客服id
			var str = "<script>var selfid=" + params.selfid + "\n var type=" + params.type + "\n var room_name='公会房间记录'" + "</script>";
			fs.readFile('./public/room_report.html',function(err,data){
				// body
				if(err){
					console.log(err);
					//404：NOT FOUND
					res.writeHead(404,{"Content-Type":"text/html"});
				}
				else{
					//200：OK
					res.writeHead(200,{"Content-Type":"text/html"});		// 包头
					res.write(str + data.toString());						// 结合甩出上半段脚本和下半段html页面
				}
				res.end();
			});
			console.log('打开公会房间记录+++++++++++++++++++',params.selfid,params.type);
		}
	}
});

// 处理get公会日报请求
app.get('/club_report',function(req,res){
	//获取返回的url对象的query属性值 
	var arg = url.parse(req.url).query;
	if(arg) {
		//将arg参数字符串反序列化为一个对象
		var params = querystring.parse(arg);
		console.log("params = ",params);
		// 请求的方式
		console.log("method = " + req.method);
		// 请求的url
		console.log("url = " + req.url);
		
		// 设置上半段脚本定义的内容
		var str = "<script>var selfid=" + params.selfid + "</script>";
		fs.readFile('./public/club_report.html',function(err,data){
			// body
			if(err){
				console.log(err);
				//404：NOT FOUND
				res.writeHead(404,{"Content-Type":"text/html"});
			}
			else{
				//200：OK
				res.writeHead(200,{"Content-Type":"text/html"});		// 包头
				res.write(str + data.toString());						// 结合甩出上半段脚本和下半段html页面
			}
			res.end();
		});
		console.log('打开公会日报+++++++++++++++++++',params.selfid,params.type);
	}
});

// 处理get联盟日报请求
app.get('/union_report',function(req,res){
	//获取返回的url对象的query属性值 
	var arg = url.parse(req.url).query;
	if(arg) {
		//将arg参数字符串反序列化为一个对象
		var params = querystring.parse(arg);
		console.log("params = ",params);
		// 请求的方式
		console.log("method = " + req.method);
		// 请求的url
		console.log("url = " + req.url);
		
		// 设置上半段脚本定义的内容
		var str = "<script>var selfid=" + params.selfid + "</script>";
		fs.readFile('./public/union_report.html',function(err,data){
			// body
			if(err){
				console.log(err);
				//404：NOT FOUND
				res.writeHead(404,{"Content-Type":"text/html"});
			}
			else{
				//200：OK
				res.writeHead(200,{"Content-Type":"text/html"});		// 包头
				res.write(str + data.toString());						// 结合甩出上半段脚本和下半段html页面
			}
			res.end();
		});
		console.log('打开联盟日报+++++++++++++++++++',params.selfid,params.type);
	}
});

// 房间主页面时触发
app.post('/room_data', async (req,res) => {
	console.log(req.body,'出现出去1');
	let rows = await tiMsg.get_room_report(req.body.id,req.body.type);
	if(rows.length >= 1) {
		res.json({"status":"success",data:rows});
		console.log('login有这个人，加载聊天界面1');
	}else {
		res.json({"status":"fail",data:rows});
		console.log('查无此人1');
	}
});

// 打开详情时触发
app.post('/room_data_second', async (req,res) => {
	console.log(req.body,req.body.id,'出现出去2');
	let rows = await tiMsg.get_room_user_report(req.body.id);
	if(rows.length >= 1) {
		res.json({"status":"success",data:rows});
		console.log('login有这个人，加载聊天界面2');
	}else {
		res.json({"status":"fail",data:rows});
		console.log('查无此人2');
	}
});

// 联盟战报主页面时触发
app.post('/union_data', async (req,res) => {
	console.log(req.body,'出现出去1');
	let rows = await tiMsg.get_union_daily_report(req.body.id);
	if(rows.length >= 1) {
		res.json({"status":"success",data:rows});
		console.log('login有这个人，加载聊天界面1');
	}else {
		res.json({"status":"fail",data:rows});
		console.log('查无此人1');
	}
});

// 联盟战报打开详情时触发
app.post('/union_data_second', async (req,res) => {
	console.log(req.body,req.body.id,'出现出去2');
	let rows = await tiMsg.get_union_club_daily_report(req.body.id);
	if(rows.length >= 1) {
		res.json({"status":"success",data:rows});
		console.log('login有这个人，加载聊天界面2');
	}else {
		res.json({"status":"fail",data:rows});
		console.log('查无此人2');
	}
});

// 公会战报主页面时触发
app.post('/club_data', async (req,res) => {
	console.log(req.body,'出现出去1');
	let rows = await tiMsg.get_club_daily_report(req.body.id);
	if(rows.length >= 1) {
		res.json({"status":"success",data:rows});
		console.log('login有这个人，加载聊天界面1');
	}else {
		res.json({"status":"fail",data:rows});
		console.log('查无此人1');
	}
});

// 公会战报打开详情时触发
app.post('/club_data_second', async (req,res) => {
	console.log(req.body,req.body.id,'出现出去2');
	let rows = await tiMsg.get_club_user_daily_report(req.body.id);
	if(rows.length >= 1) {
		res.json({"status":"success",data:rows});
		console.log('login有这个人，加载聊天界面2');
	}else {
		res.json({"status":"fail",data:rows});
		console.log('查无此人2');
	}
});
server.listen(3000);
